﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
    class MenuItens : GerenciadorTelas
    {     
        Texture2D texturaFundo; // textura de fundo do menu
        Texture2D texturaSelecionar;

        public static List<Item> listaItensGuardados = new List<Item>(); // lista para guardar os itens
        public static List<Item> itemEstrela = new List<Item>(); // lista para guardar os itens
        public static List<Item> itemChave = new List<Item>(); // lista para guardar os itens
        public static List<Item> itemRupie = new List<Item>(); // lista para guardar os itens

        Rectangle[] itensPosicoes = new Rectangle[9]; // lista para pré-determinar as posições que os itens terão
        Rectangle recIconeSelecionar;

        SpriteFont fonte;

        public MenuItens(ContentManager Content)
        {
            texturaFundo = Content.Load<Texture2D>("menuitens");

            texturaSelecionar = Content.Load<Texture2D>("selecionar");

            fonte = Content.Load<SpriteFont>("arial");

            itensPosicoes[0] = new Rectangle(70, 127, 40, 40);
            itensPosicoes[1] = new Rectangle(240, 127, 40, 40);
            itensPosicoes[2] = new Rectangle(380, 127, 40, 40);

            itensPosicoes[3] = new Rectangle(70, 220, 40, 40);
            itensPosicoes[4] = new Rectangle(240, 220, 40, 40);
            itensPosicoes[5] = new Rectangle(380, 220, 40, 40);

            itensPosicoes[6] = new Rectangle(70, 320, 40, 40);
            itensPosicoes[7] = new Rectangle(240, 320, 40, 40);
            itensPosicoes[8] = new Rectangle(380, 320, 40, 40);

            recIconeSelecionar = itensPosicoes[0];

        }

        public void Update(GameTime gameTime)
        {
            foreach (Item item in listaItensGuardados)
            {
                switch (item.tipoItem)
                {
                    case 0:
                        item.recPosicaoItem = itensPosicoes[0];
                        // itemChave.Add(item);
                        break;

                    case 1:
                        item.recPosicaoItem = itensPosicoes[1];
                       // itemRupie.Add(item);
                        break;

                    case 2:
                        item.recPosicaoItem = itensPosicoes[2];
                      //  itemEstrela.Add(item);
                        break;
                }
            }


            if ((Game1.ApertouJoystick(Buttons.X)||(Game1.ApertouTeclado(Keys.X))))
            {
                estadoAtual = Estados.FASE1;
            }

            if ((Game1.ApertouJoystick(Buttons.LeftThumbstickLeft)) || (Game1.ApertouJoystick(Buttons.DPadLeft)))
            {
                if (recIconeSelecionar == itensPosicoes[0])
                    recIconeSelecionar = itensPosicoes[2];

                else if (recIconeSelecionar == itensPosicoes[2])
                    recIconeSelecionar = itensPosicoes[1];

                else if (recIconeSelecionar == itensPosicoes[1])
                    recIconeSelecionar = itensPosicoes[0];
            }

            if ((Game1.ApertouJoystick(Buttons.LeftThumbstickRight)) || (Game1.ApertouJoystick(Buttons.DPadRight)))
            {
                if (recIconeSelecionar == itensPosicoes[0])
                    recIconeSelecionar = itensPosicoes[1];

                else if (recIconeSelecionar == itensPosicoes[1])
                    recIconeSelecionar = itensPosicoes[2];

                else if (recIconeSelecionar == itensPosicoes[2])
                    recIconeSelecionar = itensPosicoes[0];
            }
            
        }

        public new void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(texturaFundo, Vector2.Zero, Color.White);


            foreach (Item item in listaItensGuardados)
            {
                item.Draw(gameTime, spriteBatch);
            }

            spriteBatch.Draw(texturaSelecionar, recIconeSelecionar, Color.White);
            
            spriteBatch.DrawString(fonte, "x" + itemChave.Count , new Vector2(itensPosicoes[0].X + 50,itensPosicoes[0].Y),Color.White);
            spriteBatch.DrawString(fonte, "x" + itemRupie.Count , new Vector2(itensPosicoes[1].X + 50, itensPosicoes[1].Y), Color.White);
            spriteBatch.DrawString(fonte, "x" + itemEstrela.Count, new Vector2(itensPosicoes[2].X + 50, itensPosicoes[2].Y), Color.White);

        }
    }
}
